package co.edu.javeriana.konigsberg.xavier.entidad;

import java.io.Serializable;

import javax.persistence.*;

import java.math.BigInteger;
import java.util.List;


/**
 * The persistent class for the ciudad database table.
 * 
 */
@Entity
@Table(name="ciudad")
@NamedQueries({
@NamedQuery(name="Ciudad.findAll", query="SELECT c FROM Ciudad c"),
@NamedQuery(name="Ciudad.findByParent", query="SELECT c FROM Ciudad c WHERE c.departamento.idDepartamento = :idDepartamento")
})
public class Ciudad implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private BigInteger idCiudad;

	private BigInteger idPais;

	private String nombreCiudad;

	//bi-directional many-to-one association to Departamento
	@ManyToOne
	@JoinColumn(name="idDepartamento")
	private Departamento departamento;

	//bi-directional many-to-one association to Programa
	@OneToMany(mappedBy="ciudad")
	private List<Programa> programas;

	public Ciudad() {
	}

	public BigInteger getIdCiudad() {
		return this.idCiudad;
	}

	public void setIdCiudad(BigInteger idCiudad) {
		this.idCiudad = idCiudad;
	}

	public BigInteger getIdPais() {
		return this.idPais;
	}

	public void setIdPais(BigInteger idPais) {
		this.idPais = idPais;
	}

	public String getNombreCiudad() {
		return this.nombreCiudad;
	}

	public void setNombreCiudad(String nombreCiudad) {
		this.nombreCiudad = nombreCiudad;
	}

	public Departamento getDepartamento() {
		return this.departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public List<Programa> getProgramas() {
		return this.programas;
	}

	public void setProgramas(List<Programa> programas) {
		this.programas = programas;
	}

	public Programa addPrograma(Programa programa) {
		getProgramas().add(programa);
		programa.setCiudad(this);

		return programa;
	}

	public Programa removePrograma(Programa programa) {
		getProgramas().remove(programa);
		programa.setCiudad(null);

		return programa;
	}

}